package com.zkthink.ceres.order.dto;


import com.zkthink.base.entity.SuperEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Builder
@ApiModel(value = "MoneyReturnBassDTO", description = "用户退款，区块链信息")
public class MoneyReturnBassDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @NotNull(message = "id不能为空", groups = SuperEntity.Update.class)
    private Long id;

    /**
     * 订单id
     */
    @ApiModelProperty(value = "订单id")
    private Long orderId;
    /**
     * 订单编号
     */
    @ApiModelProperty(value = "订单编号")
    @Length(max = 32, message = "订单编号长度不能超过32")
    private String orderCode;
    /**
     * 订单商品id列表
     */
    @ApiModelProperty(value = "订单商品id列表")
    @Length(max = 1024, message = "订单商品id列表不能超过1024")
    private String orderProductIds;


    /**
     * 货物状态：1-未收到货 2-已收到货
     */
    @ApiModelProperty(value = "货物状态：1-未收到货 2-已收到货")
    @NotNull(message = "货物状态：1-未收到货 2-已收到货不能为空")
    private Integer goodsState;
    /**
     * 退款原因
     */
    @ApiModelProperty(value = "退款原因")
    private Integer returnReason;
    /**
     * 退款描述
     */
    @ApiModelProperty(value = "退款描述")
    @Length(max = 256, message = "退款描述长度不能超过256")
    private String returnDesc;
    /**
     * 审核退款时的备注
     */
    @ApiModelProperty(value = "审核退款时的备注")
    @Length(max = 256, message = "审核退款时的备注长度不能超过256")
    private String returnMoneyRemark;
    /**
     * 申请退款金额
     */
    @ApiModelProperty(value = "申请退款金额")
    private Long applySum;
    /**
     * 真实退款金额
     */
    @ApiModelProperty(value = "真实退款金额")
    private Long realReturnSum;

    /**
     * 退款时间
     */
    @ApiModelProperty(value = "退款时间")
    private LocalDateTime returnTime;
    /**
     * 审核时间
     */
    @ApiModelProperty(value = "审核时间")
    private LocalDateTime auditTime;

}
